package br.com.medvagas.comum.util;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;

import br.com.medvagas.comum.enumeracao.EnumValorLabel;

public class UtilEnum {
	
	/**
	 * Recupera uma lista de SelectItem a partir de um array de valores de uma Enum
	 * @param enumValues array de valores de uma Enum
	 * @return lista de SelectItem
	 */
	public static List<SelectItem> recuperarListaSelectItem(EnumValorLabel[] enumValues, boolean gerarOpcaoSelecione) {
		
		List<SelectItem> lsSelectItem;
		if (gerarOpcaoSelecione) {
			lsSelectItem = new ArrayList<SelectItem>(enumValues.length + 1);
			lsSelectItem.add(new SelectItem("", "-- Selecione --"));
		} else {
			lsSelectItem = new ArrayList<SelectItem>(enumValues.length);
		}
		
		SelectItem selectItem;
		for (EnumValorLabel enumeracao : enumValues) {
			selectItem = new SelectItem(enumeracao.getValor(), enumeracao.getLabel());
			lsSelectItem.add(selectItem);
		}
		return lsSelectItem;
	}
	
	/**
	 * Recupera uma lista de SelectItem a partir de um array de valores de uma Enum
	 * @param enumValues array de valores de uma Enum
	 * @return lista de SelectItem
	 */
	public static List<SelectItem> recuperarListaSelectItem(EnumValorLabel[] enumValues, String valueOpcaoDefault, String labelOpcaoDefault) {
		
		List<SelectItem> lsSelectItem;
		if (valueOpcaoDefault != null && labelOpcaoDefault != null) {
			lsSelectItem = new ArrayList<SelectItem>(enumValues.length + 1);
			lsSelectItem.add(new SelectItem(valueOpcaoDefault, labelOpcaoDefault));
		} else {
			lsSelectItem = new ArrayList<SelectItem>(enumValues.length);
		}
		
		SelectItem selectItem;
		for (EnumValorLabel enumeracao : enumValues) {
			selectItem = new SelectItem(enumeracao.getValor(), enumeracao.getLabel());
			lsSelectItem.add(selectItem);
		}
		return lsSelectItem;
	}
	
  	public static String recuperarValue(EnumValorLabel[] enumValues, String label) {
		for (EnumValorLabel enumeracaoValorLabel : enumValues) {
			if (enumeracaoValorLabel.getLabel().equals(label)) {
				return enumeracaoValorLabel.getValor();
			}
		}
		return new String();
	}
  	
  	public static String recuperarLabel(EnumValorLabel[] enumValues, String value) {
		for (EnumValorLabel enumeracaoValorLabel : enumValues) {
			if (enumeracaoValorLabel.getValor().equals(value)) {
				return enumeracaoValorLabel.getLabel();
			}
		}
		return new String();
	}
  	
}
